import axios from 'axios'
import {getToken,setToken} from '@/request/auth'
import appConfig from '@/config/appconfig';


const instance = axios.create({
    baseURL: appConfig.baseUrl+'/users',
    timeout: 5000
});


// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    let token = getToken();
    if (token) {
        config.headers['Authorization'] = 'Bearer ' + token
    }

    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    return response.data
  },
  function (error) {
    if (error.response.status == 401) {
      console.log('响应拦截器-错误-401')
      //获取AccessToken RefreshToken
      const AccessToken = localStorage.getItem('accessToken')
      const RefreshToken = localStorage.getItem('refreshToken')
      //如果存在
      if (AccessToken && RefreshToken) {
        try {
          instance //刷新请求
            .post(` /refreshtoken`, {
              AccessToken,
              RefreshToken,
            })
            .then((res) => {
              //重新设置token和refreshtoken
              setToken(res.data.accessToken, res.data.refreshToken)
              console.log(setToken);
            })
            .catch((err) => {
              console.log(err)
            })
        } catch (error) {
          console.log(error)
        }
      }
    }
    // 对响应错误做点什么
    return Promise.reject(error)
  },
)

export default instance